/**
 *====================================================
 * 文件名称: PickupApplicationService.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2015年09月23日	chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.finance.project.service;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Set;

import com.yuexunit.finance.project.entity.PickupApplicationEntity;
import com.yuexunit.finance.project.entity.lexicon.ApplicationSimpleStateEnum;
import com.yuexunit.finance.project.entity.lexicon.ApplicationStateEnum;
import com.yuexunit.finance.project.entity.lexicon.PickupMethodEnum;
import com.yuexunit.finance.project.entity.lexicon.PickupTypeEnum;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;

/**
 * @ClassName: PickupApplicationService
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author chenxy
 * @date 2015年09月23日 18:56:17
 */
public interface PickupApplicationService {

	public Long createPickupApplicationEntity(PickupApplicationEntity entity);

	public void updatePickupApplication(PickupApplicationEntity entity);

	/** 更新提货申请 */
	public void renovatePickupApplication(PickupApplicationEntity persist);

	public PickupApplicationEntity inquirePickupApplication(Long pickupId);

	public PageList<PickupApplicationEntity> inquirePickupApplicationPageList(Long[] pickupIds, Long enterpriseId, Long financeId, String financeNumber, ApplicationSimpleStateEnum applicationState, PickupTypeEnum pickupType, Date beginDate,
			Date endDate, PageCriteria page);
	
	public PageList<PickupApplicationEntity> inquirePickupApplicationPageLists(List<Long> financeIds, Long[] pickupIds, Long enterpriseId, Long financeId, String financeNumber, ApplicationSimpleStateEnum applicationState, PickupTypeEnum pickupType, Date beginDate,
			Date endDate, String enterpriseName,String bulkstockName, Integer pickupMethod, String pickupNumber, PageCriteria page);
	
	public List<PickupApplicationEntity> inquirePickupApplicationList(Long enterpriseId, Set<ApplicationStateEnum> applicationState, PickupMethodEnum pickupMethod, String enterpriseName, Date beginDate, Date endDate, Long[] pickupIds);

	/** 提货审批数 */
	public List<Long> countWaitAuditPickupApplication(List<Long> financeIds);

	/** 收款通知数 */
	public List<Long> countWaitReceivablesPickupApplication();

	/** 放货通知数 */
	public List<Long> countWaitDeliveryPickupApplication();

	/** 提前还款数 */
	public List<Long> countWaitAuditAheadApplication();

	/** 赎货审批数 */
	public List<Long> countWaitAuditRedeemApplication();

	/** 未确认授信金额 */
	public BigDecimal inquirePickupApplicationWaitCreditQuota(Long financeId);

	/** 查询台账资金-现金提货(还款金额-利息) */
	public List<PickupApplicationEntity> inquirePickupApplicationCapitalList(Long financeId);
	
	
	/** 
	 * @Title: inquirePickupApplicationList 
	 * @Description: TODO 查询所有的提货信息
	 * @return
	 * @return: List<PickupApplicationEntity>
	 */
	public List<PickupApplicationEntity> inquirePickupApplicationList();
	
	
	/** 
	 * @Title: inquirePickupApplicationList 
	 * @Description: TODO 查询所有的提货信息
	 * @return
	 * @return: List<PickupApplicationEntity>
	 */
	public List<PickupApplicationEntity> inquirePickupApplicationCompleteList();

	public List<Date> inquireWarning(Long[] pickupIds, String colName);
}
